<?php
defined('IN_IXDCW') or exit('Access Denied');
$do    = new LearnModule($moduleid);
$menus = array(
	array('添加' . $MOD['name'], '?moduleid=' . $moduleid . '&action=add'),
	array($MOD['name'] . '列表', '?moduleid=' . $moduleid),
	array('审核' . $MOD['name'], '?moduleid=' . $moduleid . '&action=check'),
	array('未通过' . $MOD['name'], '?moduleid=' . $moduleid . '&action=reject'),
	array('回收站', '?moduleid=' . $moduleid . '&action=recycle'),
	array('移动分类', '?moduleid=' . $moduleid . '&action=move'),
);


if ($_catids) require DT_ROOT . '/admin/admin_check.inc.php';

if (in_array($action, array('', 'check', 'reject', 'recycle'))) {
	$sfields = array('模糊', '标题', '关键词', '简介', '作者', '来源', '来源网址', '会员名', 'IP');
	$dfields = array('keyword', 'title', 'tag', 'introduce', 'author', 'copyfrom', 'fromurl', 'username', 'ip');
	$sorder  = array('结果排序方式', '添加时间降序', '添加时间升序', '更新时间降序', '更新时间升序', '浏览次数降序', '浏览次数升序', '信息ID降序', '信息ID升序');
	$dorder  = array($MOD['order'], 'addtime DESC', 'addtime ASC', 'edittime DESC', 'edittime ASC', 'hits DESC', 'hits ASC', 'itemid DESC', 'itemid ASC');

	isset($fields) && isset($dfields[$fields]) or $fields = 0;
	isset($order) && isset($dorder[$order]) or $order = 0;
	$level  = isset($level) ? intval($level) : 0;
	$typeid = isset($typeid) ? ($typeid === '' ? -1 : intval($typeid)) : -1;

	isset($datetype) && in_array($datetype, array('edittime', 'addtime')) or $datetype = 'addtime';
	$fromdate = isset($fromdate) && preg_match("/^([0-9]{8})$/", $fromdate) ? $fromdate : '';
	$fromtime = $fromdate ? strtotime($fromdate . ' 0:0:0') : 0;
	$todate   = isset($todate) && preg_match("/^([0-9]{8})$/", $todate) ? $todate : '';
	$totime   = $todate ? strtotime($todate . ' 23:59:59') : 0;

	$thumb = isset($thumb) ? intval($thumb) : 0;
	$link  = isset($link) ? intval($link) : 0;
	$guest = isset($guest) ? intval($guest) : 0;
	$itemid or $itemid = '';

	$fields_select = dselect($sfields, 'fields', '', $fields);
	$type_select   = dselect($TYPE, 'typeid', $MOD['name'] . '类型', $typeid);
	$level_select  = level_select('level', '级别', $level);
	$order_select  = dselect($sorder, 'order', '', $order);

	$condition = '';
	if ($_childs) $condition .= " AND catid IN (" . $_childs . ")"; //CATE
	if ($keyword) $condition .= " AND $dfields[$fields] LIKE '%$keyword%'";
	if ($catid) $condition .= ($CATEGORY[$catid]['child']) ? " AND catid IN (" . $CATEGORY[$catid]['arrchildid'] . ")" : " AND catid=$catid";
	if ($level) $condition .= " AND level=$level";
	if ($fromtime) $condition .= " AND `$datetype`>=$fromtime";
	if ($totime) $condition .= " AND `$datetype`<=$totime";
	if ($thumb) $condition .= " AND thumb<>''";
	if($psize) $do->setPagesize($psize);
	if ($link) $condition .= " AND islink>0";
	if ($guest) $condition .= " AND username=''";
	if ($itemid) $condition = " AND itemid=$itemid";

	$timetype = strpos($dorder[$order], 'edit') === false ? 'add' : '';
}
switch ($action) {
	case 'add':
		if ($submit) {
			if ($do->pass($post)) {
				$do->add($post);
				dmsg('添加成功', '?moduleid=' . $moduleid . '&action=' . $action . '&catid=' . $post['catid']);
			} else {
				msg($do->getErrmsg());
			}
		} else {
			foreach ($do->getFields() as $v) {
				isset($$v) or $$v = '';
			}
			$content = '';
			$status  = 3;
			$addtime = timetodate($DT_TIME);
			$item    = array();
			$menuid  = 0;
			$tname   = $menus[$menuid][0];
			isset($url) or $url = '';
			if ($url) {
				$tmp = fetch_url($url);
				if ($tmp) extract($tmp);
			}
			include tpl('edit', $module);
		}
		break;
	case 'edit':
		$itemid or msg();
		$do->setItemid($itemid);
		if ($submit) {
			if ($do->pass($post)) {
				$do->edit($post);
				dmsg('修改成功', $forward);
			} else {
				msg($do->getErrmsg());
			}
		} else {
			$item = $do->getOne();
			extract($item);
			$addtime   = timetodate($addtime);
			$menuon    = array('4', '3', '2', '1');
			$menuid    = $menuon[$status];
			$tname     = '修改' . $MOD['name'];
			include tpl($action, $module);
		}
		break;
	case 'move':
		if ($submit) {
			$fromids or msg('请填写来源ID');
			if ($tocatid) {
				$db->query("UPDATE {$table} SET catid=$tocatid WHERE `{$fromtype}` IN ($fromids)");
				dmsg('移动成功', $forward);
			} else {
				msg('请选择目标分类');
			}
		} else {
			$itemid = $itemid ? implode(',', $itemid) : '';
			$menuid = 5;
			include tpl($action, $module);
		}
		break;
	case 'delete':
		$itemid or msg('请选择' . $MOD['name']);
		isset($recycle) ? $do->recycle($itemid) : $do->delete($itemid);
		dmsg('删除成功', $forward);
		break;
	case 'restore':
		$itemid or msg('请选择' . $MOD['name']);
		$do->restore($itemid);
		dmsg('还原成功', $forward);
		break;
	case 'clear':
		$do->clear();
		dmsg('清空成功', $forward);
		break;
	case 'level':
		$itemid or msg('请选择' . $MOD['name']);
		$level = intval($level);
		$do->level($itemid, $level);
		dmsg('级别设置成功', $forward);
		break;
	case 'recycle':
		$lists  = $do->getList('status=0' . $condition, $dorder[$order]);
		$menuid = 4;
		include tpl('index', $module);
		break;
	case 'reject':
		if ($itemid && !$psize) {
			$do->reject($itemid);
			dmsg('拒绝成功', $forward);
		} else {
			$lists  = $do->getList('status=1' . $condition, $dorder[$order]);
			$menuid = 3;
			include tpl('index', $module);
		}
		break;
	case 'check':
		if ($itemid && !$psize) {
			$do->check($itemid);
			dmsg('审核成功', $forward);
		} else {
			$lists  = $do->getList('status=2' . $condition, $dorder[$order]);
			$menuid = 2;
			include tpl('index', $module);
		}
		break;
	case 'author':
		$condition = "status=3";
		if ($keyword) $condition .= " AND `author` LIKE '%$keyword%'";
		$lists             = array();
		$result            = $db->query("SELECT COUNT(`author`) AS num,author FROM {$table} WHERE $condition GROUP BY `author` ORDER BY num DESC LIMIT 0,50");
		$lists[]['author'] = '本站原创';
		$lists[]['author'] = '佚名';
		while ($r = $db->fetchArray($result)) {
			if (!$r['author']) continue;
			$lists[] = $r;
		}
		include tpl('author', $module);
		break;
	case 'from':
		$condition = "status=3";
		if ($keyword) $condition .= " AND (`copyfrom` LIKE '%$keyword%' OR `fromurl` LIKE '%$keyword%')";
		$lists  = array();
		$result = $db->query("SELECT COUNT(`copyfrom`) AS num,copyfrom,fromurl FROM {$table} WHERE $condition GROUP BY `copyfrom` ORDER BY num DESC LIMIT 0,50");
		while ($r = $db->fetchArray($result)) {
			if (!$r['copyfrom']) continue;
			$lists[] = $r;
		}
		include tpl('from', $module);
		break;
	default:
		$lists  = $do->getList('status=3' . $condition, $dorder[$order]);
		$menuid = 1;
		include tpl('index', $module);
		break;
}